#!/bin/sh
##
## This file is part of the sigrok-util project.
##
## Copyright (C) 2015 Uwe Hermann <uwe@hermann-uwe.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, see <http://www.gnu.org/licenses/>.
##

set -e

# The path where the compiled packages will be installed.
PREFIX=$HOME/sr_macosx

# The path where to download files to and where to build packages.
BUILDDIR=./build

# The path where the libsigrok Python bindings will be installed.
PYPATH=$PREFIX/lib/python2.7/site-packages

# Edit this to control verbose build output.
# V="V=1 VERBOSE=1"

# Edit this to enable/disable/modify parallel compiles.
PARALLEL="-j "`sysctl -n hw.ncpu`

# Uncomment the following lines to build with clang and run scan-build.
# export CC=llvm-gcc
# export CXX=llvm-g++
# SB="scan-build -k -v"

# Uncomment the following lines to build with gcc/g++.
export CC=gcc
export CXX=g++

# We use Qt 5.5 in order to remain compatible with more versions of Mac OS X.
QTVER=qt@5.5

# Path to Qt5 binaries (needed for cmake to find the Qt5 libs).
export PATH="$(brew --prefix $QTVER)/bin:$PATH"

# You usually don't need to change anything below this line.

# -----------------------------------------------------------------------------

# PKG_CONFIG_PATH will need to point to pkg-config files of Homebrew's
# keg-only formulae.
P="$PREFIX/lib/pkgconfig"
for FORMULA in libffi python@2 python@3 "$QTVER"; do
    P="$P:$(brew --prefix "$FORMULA")/lib/pkgconfig"
done

# Extra options to pass to configure.
C="$C --prefix=$PREFIX"

# Remove build directory contents (if any) and create a new build dir.
rm -rf $BUILDDIR
mkdir $BUILDDIR
cd $BUILDDIR

GIT_CLONE="git clone --depth=1"

REPO_BASE="git://sigrok.org"

# -----------------------------------------------------------------------------

# libserialport
$GIT_CLONE $REPO_BASE/libserialport
cd libserialport
./autogen.sh
mkdir build
cd build
../configure $C
$SB make $PARALLEL $V
make install $V
cd ../..

# libsigrok
mkdir -p $PYPATH
$GIT_CLONE $REPO_BASE/libsigrok
cd libsigrok
./autogen.sh
mkdir build
cd build
PKG_CONFIG_PATH=$P ../configure $C
$SB make $PARALLEL $V
PYTHONPATH=$PYPATH $SB make install $V
$SB make check $V
cd ../..

# libsigrokdecode
$GIT_CLONE $REPO_BASE/libsigrokdecode
cd libsigrokdecode
./autogen.sh
mkdir build
cd build
PKG_CONFIG_PATH=$P ../configure $C
$SB make $PARALLEL $V
make install $V
$SB make check $V
cd ../..

# sigrok-firmware
$GIT_CLONE $REPO_BASE/sigrok-firmware
cd sigrok-firmware
./autogen.sh
mkdir build
cd build
# Nothing gets cross-compiled here, we just need 'make install' basically.
../configure $C
make install $V
cd ../..

# sigrok-firmware-fx2lafw
$GIT_CLONE $REPO_BASE/sigrok-firmware-fx2lafw
cd sigrok-firmware-fx2lafw
./autogen.sh
mkdir build
cd build
# We're building the fx2lafw firmware on the host, no need to cross-compile.
../configure $C
make $PARALLEL $V
make install $V
cd ../..

# sigrok-cli
$GIT_CLONE $REPO_BASE/sigrok-cli
cd sigrok-cli
./autogen.sh
mkdir build
cd build
PKG_CONFIG_PATH=$P ../configure $C
$SB make $PARALLEL $V
make install $V
cd ../..

# PulseView
$GIT_CLONE $REPO_BASE/pulseview
cd pulseview
mkdir build
cd build
PKG_CONFIG_PATH=$P $SB cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DDISABLE_WERROR=y -DENABLE_TESTS=y ..
$SB make $PARALLEL $V
make install $V
$SB make test $V
cd ../..

